1. Technical Field
This application relates to the field of storing data, and more particularly to the field of storing and retrieving data in a large data storage system.
2. Description of Related Art
Information that is added annually to the digital universe is estimated to be around 988 billion gigabytes, which is about eighteen million times the information in all the books ever written. The type of information that is stored includes rich digital media and unstructured business content. There is also an ongoing conversion from analog to digital formats—film to digital image capture, analog to digital voice, and analog to digital TV. The rich digital media and unstructured business content have unique characteristics and storage requirements that are different from structured data types (e.g. database records).
Many conventional storage systems are highly optimized to deliver high performance I/O for small chunks of data. Furthermore, these systems were designed to support gigabyte and terabyte sized information stores. However, rich digital media and unstructured business content have greater capacity requirements (petabyte versus gigabyte/terabyte sized systems), less predictable growth and access patterns, large file sizes, billions and billions of objects, high throughput requirements, single writer, multiple reader access patterns, and a need for multi-platform accessibility. In some cases, conventional storage systems have met these needs in part by using specialized hardware platforms to achieve required levels of performance and reliability. Unfortunately, the use of specialized hardware results in higher customer prices and may not support volume economics as the capacity demands grow large.
Some of these issues have been addressed using cloud storage, such as the cloud storage system provided by EMC Corporation of Hopkinton, Mass. Such a system is disclosed, for example, in U.S. patent application no. 20090112789 (the '789 application), which is incorporated herein by reference. The '789 application provides a system where data objects are distributed among different servers that are possibly in different locations.
In some cases, it is desirable to provide replica data objects so that there are multiple instances of the same data on different servers. Any one of the instances may be provided in response to a read request or other type of request, such as a create or write request. A form of load balancing may be provided by selecting the instances randomly or, for example, in round robin fashion. However, doing this does not take into account any performance issues associated with any of the servers containing the instances. Thus, the system may attempt to access a particular instance on a particular server and, after the access request times out (takes too long to return a result), the system may mark the server/instance as unavailable and not attempt more accesses there until perhaps the situation is fixed.
While it is useful to mark non-performing servers as unavailable, it would be advantageous to be able to mark the server/instance as unavailable before attempting the access, thereby eliminating the time needed to wait for a timeout to occur.